Amazon SQSにSNSからメッセージを送ってもポーリングされないときにはアクセス権限を確認してみよう
SQSに泣かされたことがある、たぬき( @tanuki_tzp )です。 今回はSQSのアクセス権限について書いていきたいと思います。
今回のテスト内容
SNSからSQSへメッセージ(Neko is )を送って、ポーリングされるか確認します。
↓テスト用のSQS キューです。
↓テスト用のSNS サブスクリプションです。今回テスト用に作成したtest-SQSへメッセージが飛ぶように設定しています。
検証
テスト(許可設定前)
SNSからテストメッセージを送ってみます。 猫は可愛いので、メッセージ本文に"Neko is Kawaii."と入力して送信します。
送信が正常に完了していれば、test-SQSにキューが溜まるはずですが、test-SQSに『SNSからメッセージを送る権限』を与えていないため、このままではキューが溜まりません。
SQSに権限を設定する
キューを溜めるためにSQSに権限を設定します。
SQSの権限設定はアクセス許可タブの『アクセス許可の追加』から追加できます。
条件の値にはSNSのエンドポイントを入力してください。
設定が追加されると、↓のように表示されます。
テスト(許可設定後)
アクセス許可を設定したのでもう一度テストメッセージを送ると、キューにメッセージが溜まります。
メッセージの中身を確認すると、"Neko is Kawaii."がしっかりと表示されています。
まとめ
AWSでハマったと感じるのは権限周りが多い気がします。 SQSに限らず、構築時にメッセージが出力されていない等のエラーが発生する場合は権限周りを注視してみると良いと思います。
※2020/04/01追記 リンク名を修正しました